package org.BUPT.modules.system.repository;

import org.BUPT.common.constant.StatusConst;
import org.BUPT.modules.system.domain.Dept;
import org.BUPT.modules.system.domain.Role;
import org.BUPT.modules.system.domain.User;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public interface UserRepository extends BaseRepository<User, Long>, JpaSpecificationExecutor<User> {

    /**
     * 根据账号查询用户数据
     * @param username 账号
     * @return 用户数据
     */
    public User findByUsername(String username);

    /**
     * 根据账号查询用户数据,且排查指定ID的用户
     * @param username 账号
     * @param id 排除的用户ID
     * @return 用户数据
     */
    public User findByUsernameAndIdNot(String username, Long id);

    /**
     * 查找多个相应部门的用户列表
     * @param dept 部门对象
     * @return 用户列表
     */
    public List<User> findByDept(Dept dept);



    /**
     * 删除多条数据
     * @param ids ID列表
     * @return 影响行数
     */
    public Integer deleteByIdIn(List<Long> ids);

//    @Query("select username from sys_user,sys_user_subjects,sys_subject where sys_user.id=sys_user_subjects.user_id and sys_user_subjects.subjects_id=sys_subject.id and sys_subject.id=?1")
//    List<User> findStudentsBySubjectId(Long subjectId);

    public List<User> findByIdNotInAndRole(List<Long> ids, Role role);
    public List<User> findByIdNotIn(List<Long> ids);

    List<User> findByIdIn(ArrayList<Long> stuids);
}
